// 注册监听器，当点击 Save 保存按钮时，调用 changeTitle 动作，修改 Tab 标签并保存
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
  if (message.action === 'changeTitle') {
    document.title = message.newTitle;

    chrome.storage.local.get('tabList', (result) => {
      const tabNameMap = result.tabList || {};
      const currentUrl = document.location.href;
      tabNameMap[currentUrl] = message.newTitle;
      chrome.storage.local.set({ tabList: tabNameMap });
    });
  }
});

// 当打开一个页面时，判断当前URL是否已经被标记别名
chrome.storage.local.get('tabList', (result) => {
  const tabNameMap = result.tabList || {};
  const currentUrl = document.location.href;

  if (tabNameMap[currentUrl]) {
    console.log('Found alias for current URL:', tabNameMap[currentUrl]);
    document.title = tabNameMap[currentUrl];

    /**
     * 防止一些动态加载的网页，在 DOMContentLoaded 事件后，标题还没有被修改或者恢复默认（Case1）。
     * 使用 MutationObserver 监听 document.title 的变化，当标题发生变化时，更新存储的标题。
     */
    const observer = new MutationObserver(() => {
      if (document.title !== tabNameMap[currentUrl]) {
        document.title = tabNameMap[currentUrl];
      }
    });

    observer.observe(document.querySelector('title'), {
      subtree: true, characterData: true, childList: true, attributes: true
    });
  }
});